int arraytest1(int p[6][7][8]) {
  int x[3][4][5] =
    { 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
      110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
      120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
      130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
      140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
      150, 151, 152, 153, 154, 155, 156, 157, 158, 159
    };
  return
    x[0][1][2] +
    p[0][1][2];
}


struct S {
  int f[10][11][12];
  S () {
    int count = 0;
    for (int i = 0; i < 10; i++) {
      for (int j = 0; j < 11; j++) {
        for (int k = 0; k < 12; k++) {
          f[i][j][k] = count++;
        }
      }
    }
  }
};

int arraytest2(S *p) {
  S x;
  return
    x.f[0][1][2] +
    p->f[0][1][2];
}
